package net.hn.hnms.sys.system.api;

import net.hn.hnms.sys.common.core.constant.ServiceNameConstants;
import net.hn.hnms.sys.system.api.domain.SysDictData;
import net.hn.hnms.sys.system.api.domain.vo.SysDictDataTypeVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * 字典服务
 *
 * @author Lion Li
 */
@FeignClient(contextId = "RemoteDictService", value = ServiceNameConstants.SYSTEM_SERVICE)
public interface RemoteDictService {

    /**
     * 根据字典类型和字典值获取字典标签
     *
     * @param dictType  字典类型
     * @param dictValue 字典值
     * @param separator 分隔符
     * @return 字典标签
     */
    @GetMapping("remoteDict/getDictLabel")
    String getDictLabel(@RequestParam("dictType") String dictType, @RequestParam("dictValue") String dictValue,
                        @RequestParam("separator") String separator);

    /**
     * 根据字典类型和字典标签获取字典值
     *
     * @param dictType  字典类型
     * @param dictLabel 字典标签
     * @param separator 分隔符
     * @return 字典值
     */
    @GetMapping("remoteDict/getDictValue")
    String getDictValue(@RequestParam("dictType") String dictType, @RequestParam("dictLabel") String dictLabel,
                        @RequestParam("separator") String separator);

    /**
     * 根据字典类型获取字典数据列表
     *
     * @param dictType  字典类型
     * @return 字典列表
     */
    @GetMapping("remoteDict/getDictList")
    List<SysDictDataTypeVo> getDictList (@RequestParam("dictType") String dictType);

    /**
     * 功能描述: 根据字典类型字典键值获取字典标签
     * @Param:  * @param dictType
     * @param dictValue
     * @Return: String
     */
    @GetMapping("remoteDict/selectDictLabel")
    String selectDictLabel(@RequestParam("dictType") String dictType,@RequestParam("dictValue") String dictValue);

    /**
     * 功能描述:
     * 根据字典类型字典标签获取字典详情
     * @Param:  * @param dictType
     * @param dictLabel
     * @Return: SysDictData
     */
    @GetMapping("remoteDict/queryInfo")
    SysDictData queryInfo(@RequestParam("dictType") String dictType, @RequestParam("dictLabel") String dictLabel);


}
